#include <iostream>
#include <array>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
    // 初始化一个包含5个元素的动态数组,每个元素的值为0
    vector<int> vs_1(5,0); 

    cout<<"可存放"<<vs_1.capacity()<<"个元素"<<endl; // 可存放5个元素
    vs_1.at(0) = 100;
    vs_1.at(1) = 200;

    vs_1.push_back(300); // 在数组末尾添加一个元素300
    vs_1.push_back(400); // 在数组末尾添加一个元素400

    cout<<"可存放"<<vs_1.capacity()<<"个元素"<<endl; // 没有调用shrink_to_fit之前 容器的大小 有可能 比实际数据需要的空间还大

    vs_1.shrink_to_fit(); // 调用shrink_to_fit方法,将容器的大小强行调整为实际数据需要的空间大小，最大限制的缩小内存
    cout<<"可存放"<<vs_1.capacity()<<"个元素"<<endl; // 可存放4个元素



    // 通过提供的迭代器范围进行初始化,从vs_1的第二个元素开始初始化vs_2
    vector<int> vs_2(vs_1.begin()+1, vs_1.end());

    cout<<vs_2.at(0)<<endl;
    cout<<vs_2.at(1)<<endl;
    cout<<vs_2.at(2)<<endl;

    // 打印vs_2元素
    for (int i = 0; i < vs_2.size(); i++)
    {
        cout<<vs_2.at(i)<<" "; // 使用at方法访问数组元素
    }
    cout<<endl;

}